package com.ygo.feihua.service;
import android.app.*;
import android.os.*;
import android.content.*;
import com.ygo.feihua.Management.*;
import cn.bmob.v3.*;
import com.ygo.feihua.*;
import com.ygo.feihua.BmobTable.*;
import cn.bmob.v3.listener.*;
import java.util.*;
import cn.bmob.v3.exception.*;
import org.json.*;

public class ServiceMessageAlert extends Service
{
	UserManagement um;

	private Intent in;

	@Override
	public IBinder onBind(Intent p1)
	{
		// TODO: Implement this method
		return null;
	}

	@Override
	public void onCreate()
	{
		// TODO: Implement this method
		super.onCreate();
		
		in=new Intent(ServiceMessageAlert.this,ShequMessageAlert.class);
		um=UserManagement.getDx();
		if(um.getUser()!=null){
			BmobQuery<MessageAlert> bq=new BmobQuery<MessageAlert>();
			bq.addWhereEqualTo("hfuser",um.getUser());
			bq.addWhereEqualTo("isShow",false);
			bq.addWhereNotEqualTo("senduser",um.getUser());
			//bq.include("senduser,hftie,hfhf");
			bq.findObjects(new FindListener<MessageAlert>(){

					@Override
					public void done(List<MessageAlert> p1, BmobException p2)
					{
						if(p2==null){
							if(p1.size()!=0){
								startListener();
								 
								//消息通知栏
								//定义NotificationManager
								String ns = Context.NOTIFICATION_SERVICE;
								NotificationManager mNotificationManager = (NotificationManager) ServiceMessageAlert.this.getSystemService(ns);
								//定义通知栏展现的内容信息
								Notification.Builder notification = new Notification.Builder(ServiceMessageAlert.this);
								PendingIntent contentIntent = PendingIntent.getActivity(ServiceMessageAlert.this, 0,in, 0);

								notification.setContentTitle("社区有新回复啦")//设置通知栏标题
									.setContentText("共收到"+p1.size()+"条新回复") //设置通知栏显示内容
									.setContentIntent(contentIntent)//设置通知栏点击意图
									.setWhen(System.currentTimeMillis())//通知产生的时间，会在通知信息里显示，一般是系统获取到的时间
									.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
									.setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消  
									.setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
									.setDefaults(Notification.DEFAULT_ALL)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合
									//Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission//震动
									.setSmallIcon(R.drawable.ourygo);//设置通知小ICON
								mNotificationManager.notify(1, notification.build());
								
							}
						}
						// TODO: Implement this method
					}
				});
					
			
			
		}
		
	}
	private boolean isk=true;
	
	public void startListener(){
		if(isk){
			isk=false;
			final BmobRealTimeData bmobRealTimeData=new BmobRealTimeData();
			bmobRealTimeData.start(new ValueEventListener() {

					
					@Override
					public void onConnectCompleted(Exception p1)
					{
						if(p1==null){
							bmobRealTimeData.subTableUpdate("MessageAlert");
						}else{
							isk=true;
						}
						// TODO: Implement this method
					}


					@Override
					public void onDataChange(JSONObject json) {
						// TODO Auto-generated method stub
						JSONObject jsonObject = json;

						try
						{
							jsonObject = jsonObject.getJSONObject("data");

							if(um.getUser()!=null){
								if(um.getUser().getObjectId().equals(jsonObject.getString("hfuser"))){
									//消息通知栏
									//定义NotificationManager
									String ns = Context.NOTIFICATION_SERVICE;
									NotificationManager mNotificationManager = (NotificationManager) ServiceMessageAlert.this.getSystemService(ns);
									//定义通知栏展现的内容信息
									Notification.Builder notification = new Notification.Builder(ServiceMessageAlert.this);
									PendingIntent contentIntent = PendingIntent.getActivity(ServiceMessageAlert.this, 0,in, 0);

									notification.setContentTitle("社区有新回复啦")//设置通知栏标题
										.setContentText(jsonObject.getString("sendmessage")) //设置通知栏显示内容
										.setContentIntent(contentIntent)//设置通知栏点击意图
										.setWhen(System.currentTimeMillis())//通知产生的时间，会在通知信息里显示，一般是系统获取到的时间
										.setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级
										.setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消  
										.setOngoing(false)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
										.setDefaults(Notification.DEFAULT_ALL)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置，使用defaults属性，可以组合
										//Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission//震动
										.setSmallIcon(R.drawable.ourygo);//设置通知小ICON
									mNotificationManager.notify(1, notification.build());
									
								}
							}
							
						}
						catch (JSONException e)
						{

						}
					}		
				});
		}
	}
	
	
}
